﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using RN.ERP.Web.ModelService;
using Newtonsoft.Json;
using Fly.Common.Linq;
using Fly.Common.WorkFlow;
using Telerik.Web.UI;
using Telerik.Web.UI.Skins;

namespace RN.ERP.Web.PersonChange
{
    public partial class PersonChangeCorpSelect : BasePage
    {
        protected string AreaCode
        {
            get
            {
                return UserInfo.CurrentArea;
            }
        }

        protected string RoleId
        {
            get
            {
                return UserInfo.RoleId;
            }
        }
        private EnterpriseService.EnterpriseServiceClient enterpriseServiceClient = new EnterpriseService.EnterpriseServiceClient();
        private BasicService.BasicServiceClient basicServiceClient = new BasicService.BasicServiceClient();
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                hdnClassID.Value = Request["classId"];
                //InitStatisticsCondition();
            }
        }

        /// <summary>
        /// 客户端grid刷新
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void RadAjaxManager1_AjaxRequest(object sender, AjaxRequestEventArgs e)
        {
            if (e.Argument == "Rebind")
            {
                ListCorps.MasterTableView.SortExpressions.Clear();
                ListCorps.MasterTableView.GroupByExpressions.Clear();
                ListCorps.Rebind();
            }

        }
        protected void ListCorps_NeedDataSource(object source, GridNeedDataSourceEventArgs e)
        {
            string ClassId = Request.QueryString["classId"];
            //var queryCondition = hdnCondition.Value;
            //if (string.IsNullOrEmpty(queryCondition))
            //{
            var queryCondition = GetCondition();
            //}
            var corp = enterpriseServiceClient.GetCompanyAllInfo(queryCondition, ListCorps.PageSize, ListCorps.CurrentPageIndex + 1, UserInfo.CurrentArea);
            var corpInfo = JsonConvert.DeserializeObject<IList<CompanyInfo>>(corp);
            int cnt = enterpriseServiceClient.GetCompanyCount(queryCondition, UserInfo.CurrentArea);
            ListCorps.AllowCustomPaging = true;
            ListCorps.VirtualItemCount = cnt;
            ListCorps.DataSource = corpInfo;
        }


        protected string GetCorpClassKind(string type)
        {
            string output = string.Empty;
            if (!String.IsNullOrEmpty(type))
            {
                Dictionary<string, string> CorpTypeDic = JsonConvert.DeserializeObject<Dictionary<string, string>>
                    (Application[ApplicationConstant.APPLICATION_CORPUSERTYPE].ToString());
                try
                {
                    output = CorpTypeDic[type];
                }
                catch
                {
                    output = "";
                }
            }
            return output;
        }

        private string GetCondition()
        {
            List<QueryCompanyInfoCondition> queryCompanyInfoList = new List<QueryCompanyInfoCondition>();
            QueryCompanyInfoCondition queryCompanyInfoCondition = new QueryCompanyInfoCondition();
            string classId = Request.QueryString["classId"];
            string corpName = txtCorpName.Text.Trim();
            //List<string> listFlow = new List<string>();
            //if (listFlow.Count > 0)
            //{
            //    foreach (var flow in listFlow)
            //    {
            //        QueryCompanyInfoCondition con = new QueryCompanyInfoCondition();
            //        int clsId = -1;
            //        if (!string.IsNullOrEmpty(classId) && int.TryParse(classId, out clsId))
            //        {
            //            con.classID = new ParameterValue<int?>() { O = OptEnum.Equal, V = clsId };
            //        }
            //        if (!string.IsNullOrEmpty(corpName))
            //        {
            //            con.CorpName = new ParameterValue<string>() { O = OptEnum.Like, V = corpName };
            //        }
            //        con.FlowCode = new ParameterValue<string>() { O = OptEnum.Equal, V = flow };
            //        queryCompanyInfoList.Add(con);
            //    }
            //}
            //else
            //{
            //    int clsId = -1;
            //    if (!string.IsNullOrEmpty(classId) && int.TryParse(classId, out clsId))
            //    {
            //        queryCompanyInfoCondition.classID = new ParameterValue<int?>() { O = OptEnum.Equal, V = clsId };
            //    }
            if (!string.IsNullOrEmpty(corpName))
            {
                queryCompanyInfoCondition.CorpName = new ParameterValue<string>() { O = OptEnum.Like, V = corpName };
            }
            queryCompanyInfoCondition.FlowCode = new ParameterValue<string>() { O = OptEnum.StartWith, V = "1" };
            queryCompanyInfoList.Add(queryCompanyInfoCondition);
            //}
            return JsonConvert.SerializeObject(queryCompanyInfoList);
        }

        private void InitStatisticsCondition()
        {
            string statistics = Request.QueryString["statistics"];
            if (!string.IsNullOrEmpty(statistics) && statistics == "1")
            {
                //string flowcode = Request.QueryString["flowcode"];
                //flowcode = Server.UrlDecode(flowcode);
                List<QueryCompanyInfoCondition> conditionList = new List<QueryCompanyInfoCondition>();
                //if (string.IsNullOrEmpty(flowcode))
                //{
                var con = CreateCommonCompanyCondition();
                con.FlowCode = new ParameterValue<string>() { O = OptEnum.Like, V = "1" };
                conditionList.Add(con);
                //}
                //else
                //{
                //    string[] flows = flowcode.Split('|');
                //    foreach (string f in flows)
                //    {
                //        var con = CreateCommonCompanyCondition();
                //        con.FlowCode = new ParameterValue<string>() { O = OptEnum.Equal, V = f };
                //        conditionList.Add(con);
                //    }
                //}
                hdnCondition.Value = JsonConvert.SerializeObject(conditionList);
            }
        }

        private QueryCompanyInfoCondition CreateCommonCompanyCondition()
        {
            string areaCode = Request.QueryString["areacode"].Trim();
            string classid = Request.QueryString["classid"];
            QueryCompanyInfoCondition con = new QueryCompanyInfoCondition();
            if (!string.IsNullOrEmpty(areaCode))
            {
                if (areaCode.EndsWith("99"))
                {
                    con.AreaCode = new ParameterValue<string>() { O = OptEnum.NotStartWith, V = UserInfo.CurrentArea };
                }
                else
                {
                    con.AreaCode = new ParameterValue<string>() { O = OptEnum.StartWith, V = areaCode };
                }
            }
            if (!string.IsNullOrEmpty(classid))
            {
                int clsId = 0;
                int.TryParse(classid, out clsId);
                con.classID = new ParameterValue<int?>() { O = OptEnum.Equal, V = clsId };
            }
            return con;
        }

    }
}